var express = require('express');
var router = express.Router();
var dictionartService = require('../../database/model/authControl/authControl')
router.post('/authList', async(req, res) => {
  let { dictKey, label, rangeTime, pageNo = 1, pageSize = 10 } = req.body
  let queryFilterOjb={//构建动态查询对象
   $and: []
  }
  if (dictKey && dictKey.length != 0) {
    queryFilterOjb.$and.push({ dictKey: { $in: dictKey } })
  }
  if (label && label.length != 0) {//this指向查询的model表对应的label
    queryFilterOjb.$and.push({ $where:`this.label.indexOf('${label}')> -1`})
  } 
  if (rangeTime && rangeTime.length != 0 && rangeTime[0].length != 0 && rangeTime[1].length != 0) {
    queryFilterOjb.$and.push({
      $and: [
        {
          createdTime: { $gte:rangeTime[0]}
        },
        {
          createdTime: { $lt:rangeTime[1]}
        }
      ]
    })
  }
  if (queryFilterOjb.$and.length == 0) {
    queryFilterOjb = {}
  }
  const query = dictionartService.find(queryFilterOjb)//定义一次查询表示查询一次 第一次查询符合的数量
  const query2 = dictionartService.find(queryFilterOjb)//第二次查询直接分页下发数据 或者在第一次查询后面继续find（）
  //count ({})方法已弃用。如果要计算集合中的文档数 (例如count ({})), 请改用estimatedDocumentCount() 函数。否则, 请改用countDocuments()函数。
  const total = await query
  const data= await query2.limit(pageSize).skip((pageNo - 1) * pageSize)|| []
  if (total || data.length > 0) {
    res.send({
      code: 1,
      msg: "查询成功",
      pageNo: pageNo,
      pageSize: pageSize,
      total: total.length,
      data: data
    })
  } else {
    res.send({
      code: 1,
      msg: "查询失败"+JSON.stringify(data),
    })
  }
})
module.exports = router
